class DataTransformer {
  // 判断是原始结构还是二维结构
  static detectType(data) {
    if (!Array.isArray(data)) return 'unknown';
    if (data.length === 0) return 'empty';

    // 如果第一层元素是对象，说明是原始结构
    if (data[0]?.peijian && data[0]?.tiaojiao) return 'original';
    // 如果第一层是数组，说明是二维结构
    if (Array.isArray(data[0])) return '2d';
    return 'unknown';
  }

  // 原始结构 → 二维数组结构
  static to2DArray(data) {
    return data.map(item => {
      const peijian = (item.peijian || []).map(p => ({ ...p, remake: item.remake }));
      const tiaojiao = (item.tiaojiao || []).map(t => ({ ...t, remake: item.remake }));
      return [...peijian, ...tiaojiao];
    });
  }

  // 二维数组结构 → 原始结构
  static toOriginal(data2D) {
    return data2D.map(group => {
      const remake = group[0]?.remake || '';
      const peijian = group.filter(i => i.type === 1).map(({ remake, ...rest }) => rest);
      const tiaojiao = group.filter(i => i.type === 2).map(({ remake, ...rest }) => rest);
      return { peijian, tiaojiao, remake , check:true };
    });
  }

  // 自动判断并转换
  static transform(data) {
    const type = this.detectType(data);
    switch (type) {
      case 'original':
        return this.to2DArray(data);
      case '2d':
        return this.toOriginal(data);
      case 'empty':
        console.warn('⚠️ 输入为空数组，返回空数组');
        return [];
      default:
        throw new Error('❌ 无法识别的数据结构格式');
    }
  }
}

// 导出模块（Node 环境可用）
export default DataTransformer;
